{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f0457b74",
   "metadata": {},
   "source": [
    "1.读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2f02663b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f01d3bb8",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('C:/Users/lenovo/BigData/PythonBase/titanic_trains.csv') #路径：绝对路径\n",
    "df = pd.read_csv('./titanic_trains.csv') #相对路径都支持,可以按快捷键tab补全路径\n",
    "df.head() #查看数据的前5行"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f24ebbdf",
   "metadata": {},
   "source": [
    "2缺失值的处理-删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "19f9faca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      0\n",
       "Survived         0\n",
       "Pclass           0\n",
       "Name             0\n",
       "Sex              0\n",
       "Age            177\n",
       "SibSp            0\n",
       "Parch            0\n",
       "Ticket           0\n",
       "Fare             0\n",
       "Cabin          687\n",
       "Embarked         2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 按列删除(遵循80%法则)如果一列的非缺失部分低于80%则可以考虑删除该列，也就是缺失部分超过20%\n",
    "#axis按列还是行删除 how全部删除还是部分删除 thresh(非缺失值部分数据是多少，891是数据行，0.8是非缺失值占比)，inplace参数表示是否对原始原始\n",
    "#变量进行修改，Ture修改有返回值，false表示不修改并且没有返回值\n",
    "# df_drop = df.dropna(axis='columns',how='any',thresh=891*0.8) #3.10版本不支持how和thresh参数同时出现\n",
    "df_drop = df.dropna(axis='columns',thresh=891*0.8,inplace=False) #axis也可以是1，0，1代表列，0代表行\n",
    "#删掉缺失值占比超过20%的列之后，再看占比情况\n",
    "df_drop.isnull().sum()/df.shape[0]*100\n",
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "a3b650c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId    0.0\n",
       "Survived       0.0\n",
       "Pclass         0.0\n",
       "Name           0.0\n",
       "Sex            0.0\n",
       "Age            0.0\n",
       "SibSp          0.0\n",
       "Parch          0.0\n",
       "Ticket         0.0\n",
       "Fare           0.0\n",
       "Embarked       0.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#按行删除\n",
    "df_drop_row = df_drop.dropna(axis=0,how='any')#按行删除时不能指定thresh参数\n",
    "df_drop_row.isnull().sum()/891*100  #这样删完以后，整个df_drop_row一个缺失值都没有了"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "daee78e0",
   "metadata": {},
   "source": [
    "3.1异常值检测-箱线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "69de7732",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算四分位数\n",
    "sfw = df_drop_row['Age'].describe() # 查看数据的整体信息\n",
    "# sfw\n",
    "Q1 = sfw['75%'] # 75%分位数  上四分位数\n",
    "Q2 = sfw['50%'] # 50%分位数\n",
    "Q3 = sfw['25%'] # 25%分位数  下四分位数\n",
    "IQR = Q1 - Q3\n",
    "up = Q1 + 1.5 * IQR #上边界\n",
    "down = Q3 - 1.5 * IQR #下边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "47b29938",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "63.0\n",
      "64.0\n",
      "63.0\n",
      "64.0\n"
     ]
    }
   ],
   "source": [
    "for x in df_drop_row['Age']:\n",
    "    if x>up or x<down:  #如果大于上边界或者小于下边界，则是异常值\n",
    "        print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "eee55c32",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 异常值处理\n",
    "for x in df_drop_row['Age'].index:\n",
    "    if df_drop_row['Age'][x]>up or df_drop_row['Age'][x]<down:\n",
    "        print('异常值',df_drop_row['Age'][x])\n",
    "        #方式1，删除\n",
    "#         df_drop_row.drop(axis=0,index=x,inplace=True) #按行删除 index为行的索引,inplace，是否对原表进行删除\n",
    "        #方式2，替换\n",
    "        df_drop_row.replace(df_drop_row['Age'][x],df_drop_row['Age'].mean(),inplace=True) #用均值替换原表\n",
    "# for x in df_drop_row['Age'].index:\n",
    "#     if df_drop_row['Age'][x]>up or df_drop_row['Age'][x]<down:\n",
    "#         print('还有异常值',df_drop_row['Age'][x])  #这里无打印，说明上面的异常值已经处理了，即删掉了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c59febe7",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAjYklEQVR4nO3df1Rb9f3H8VdK1wgKOGtNyKQlk3R0gk7Qw0rHF9iEnep6xrBzE93pzs526qjbsE6Udj+oZyYTFesZa2d7PB1bx3HneLDb6TYt244UD3VDWJ2tVavSyiYR9bAktgincL9/dGRG8Edo+ITA83HOPTP33oQ3/yzPfrjJtVmWZQkAAMCQBfEeAAAAzC/EBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIxaGO8B3m18fFyvvvqqUlNTZbPZ4j0OAAD4ECzLUigUksvl0oIF77+2Mevi49VXX1VmZma8xwAAANPQ39+vCy+88H3PmXXxkZqaKun08GlpaXGeBgAAfBjBYFCZmZnh9/H3M+viY+JPLWlpacQHAAAJ5sNcMsEFpwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEbNui8ZAzA3jY2NqbOzUwMDA8rIyFBxcbGSkpLiPRaAOIhq5ePUqVP6wQ9+ILfbreTkZH384x/XHXfcofHx8fA5lmWpoaFBLpdLycnJKi0t1eHDh2M+OIDE0dbWpuzsbJWVlam6ulplZWXKzs5WW1tbvEcDEAdRxcddd92lX/ziF2pubtaRI0fU2Niou+++Wz/72c/C5zQ2NqqpqUnNzc3q7u6W0+lUeXm5QqFQzIcHMPu1tbVp7dq1ysvL04EDBxQKhXTgwAHl5eVp7dq1BAgwD9ksy7I+7Mlf+MIX5HA49OCDD4b3XXPNNUpJSdGvf/1rWZYll8ul2tpa3XbbbZKkkZERORwO3XXXXVq/fv0H/oxgMKj09HQFAgHu7QIkuLGxMWVnZysvL0979uyJuM32+Pi4KisrdejQIR09epQ/wQAJLpr376hWPj7zmc/oL3/5i1544QVJ0tNPP60nnnhCV111lSSpr69Pfr9fFRUV4efY7XaVlJSoq6trytccGRlRMBiM2ADMDZ2dnTp27Jg2bdoUER6StGDBAtXX16uvr0+dnZ1xmhBAPER1weltt92mQCCgnJwcJSUlaWxsTHfeeaeuu+46SZLf75ckORyOiOc5HA4dP358ytf0+XzasmXLdGYHMMsNDAxIknJzc6c8PrF/4jwA80NUKx+//e1vtXv3brW2tqq3t1ctLS2655571NLSEnHeu2+na1nWe95it76+XoFAILz19/dH+SsAmK0yMjIkSYcOHZry+MT+ifMAzA9RrXzceuutuv322/XVr35VkpSXl6fjx4/L5/Np3bp1cjqdkk6vgLzz/0wGBwcnrYZMsNvtstvt050fwCxWXFysrKwseb3eKa/58Pl8crvdKi4ujuOUAEyLauXj5MmTk/5um5SUFP6ordvtltPpVHt7e/j46OioOjo6VFRUFINxASSSpKQk3Xvvvdq7d68qKysjPu1SWVmpvXv36p577uFiU2CeiWrlY82aNbrzzju1dOlSXXzxxfrHP/6hpqYmfeMb35B0+s8ttbW18nq98ng88ng88nq9SklJUXV19Yz8AgBmt6qqKj388MO65ZZbIv4R4na79fDDD6uqqiqO0wGIh6g+ahsKhfTDH/5QjzzyiAYHB+VyuXTdddfpRz/6kRYtWiTp9PUdW7Zs0QMPPKChoSEVFhbq5z//+XtecPZufNQWmJv4hlNgbovm/Tuq+DCB+AAAIPHM2Pd8AAAAnCniAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEYRHwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRC+M9AID5YWxsTJ2dnRoYGFBGRoaKi4uVlJQU77EAxAErHwBmXFtbm7Kzs1VWVqbq6mqVlZUpOztbbW1t8R4NQBwQHwBmVFtbm9auXau8vDwdOHBAoVBIBw4cUF5entauXUuAAPOQzbIsK95DvFMwGFR6eroCgYDS0tLiPQ6AMzA2Nqbs7Gzl5eVpz549WrDgf//eGR8fV2VlpQ4dOqSjR4/yJxggwUXz/s3KB4AZ09nZqWPHjmnTpk0R4SFJCxYsUH19vfr6+tTZ2RmnCQHEA/EBYMYMDAxIknJzc6c8PrF/4jwA8wPxAWDGZGRkSJIOHTo05fGJ/RPnAZgfiA8AM6a4uFhZWVnyer0aHx+PODY+Pi6fzye3263i4uI4TQggHogPADMmKSlJ9957r/bu3avKysqIT7tUVlZq7969uueee7jYFJhn+JIxADOqqqpKDz/8sG655RYVFRWF97vdbj388MOqqqqK43QA4oGP2gIwgm84Bea2aN6/WfkAYERSUpJKS0vjPQaAWYD4AGDE6Oiotm3bppdeekkXXXSRampqtGjRoniPBSAOiA8AM66urk733XefTp06Fd5366236uabb1ZjY2McJwMQD3zaBcCMqqur0913363Fixdr586dGhgY0M6dO7V48WLdfffdqquri/eIAAzjglMAM2Z0dFRnn322Fi9erOPHj+vAgQPhC05XrlypZcuW6c0339SJEyf4EwyQ4Li3C4BZYdu2bTp16pSqqqqUk5OjsrIyVVdXq6ysTDk5OfrSl76kU6dOadu2bfEeFYBBXPMBYMa89NJLkqTt27fr6quv1he/+EUNDw8rOTlZL774on7xi19EnAdgfohq5SMrK0s2m23StmHDBkmSZVlqaGiQy+VScnKySktLdfjw4RkZHMDsl5WVJUlasmSJHnvsMd1///3asWOH7r//fj322GNasmRJxHkA5oeo4qO7u1sDAwPhrb29XZL05S9/WZLU2NiopqYmNTc3q7u7W06nU+Xl5QqFQrGfHMCsl5eXJ0l6/fXXp7zg9PXXX484D8D8EFV8LFmyRE6nM7zt3btXF110kUpKSmRZlrZu3arNmzerqqpKubm5amlp0cmTJ9Xa2jpT8wOYxV577bXwf4+Pj0/apjoPwNw37QtOR0dHtXv3bn3jG9+QzWZTX1+f/H6/KioqwufY7XaVlJSoq6vrPV9nZGREwWAwYgMwN/ztb3+TJBUWFmpoaEjr16/Xxz72Ma1fv15DQ0O64oorIs4DMD9MOz727Nmj//znP/r6178uSfL7/ZIkh8MRcZ7D4Qgfm4rP51N6enp4y8zMnO5IAGaZiU/yp6WlKRQK6b777tNNN92k++67T6FQSOeee27EeQDmh2nHx4MPPqjVq1fL5XJF7LfZbBGPLcuatO+d6uvrFQgEwlt/f/90RwIwy3g8HklSe3u7rr32WhUWFsrr9aqwsFDXXntt+LqxifMAzA/T+qjt8ePH9ec//1ltbW3hfU6nU9LpFZCMjIzw/sHBwUmrIe9kt9tlt9unMwaAWa6mpka33nqrzj77bD399NMqKioKH1u2bJnS09N14sQJ1dTUxHFKAKZNa+Vj165duuCCC3T11VeH97ndbjmdzvC/ZKTT14V0dHRE/B8OgPlj0aJFuvnmmxUIBDQyMqKNGzequblZGzdu1Ntvv61AIKCbb76ZbzcF5pmoVz7Gx8e1a9curVu3TgsX/u/pNptNtbW18nq98ng88ng88nq9SklJUXV1dUyHBpA4Jm4cd99996mpqSm8f+HChbr11lu5sRwwD0V9b5d9+/bp85//vJ5//nktX7484phlWdqyZYseeOABDQ0NqbCwUD//+c+Vm5v7oV+fe7sAc9Po6Ki2bduml156SRdddJFqampY8QDmkGjev7mxHAAAOGPcWA4AAMxaxAcAADCK+AAAAEYRHwAAwCjiAwAAGDWtbzgFgGiNjY2ps7NTAwMDysjIUHFxsZKSkuI9FoA4YOUDwIxra2tTdna2ysrKVF1drbKyMmVnZ0fcogHA/EF8AJhRbW1tWrt2rfLy8nTgwAGFQiEdOHBAeXl5Wrt2LQECzEN8yRiAGTM2Nqbs7Gzl5eVpz549WrDgf//eGR8fV2VlpQ4dOqSjR4/yJxggwfElYwBmhc7OTh07dkybNm2KCA9JWrBggerr69XX16fOzs44TQggHogPADNmYGBAkt7z/k4T+yfOAzA/EB8AZkxGRoYk6dChQ1Men9g/cR6A+YH4ADBjiouLlZWVJa/Xq/Hx8Yhj4+Pj8vl8crvdKi4ujtOEAOKB7/kA8IFOnjyp5557blrP3bBhg+rq6sIfs01KStLY2JhaW1vV2dmpxsZGPf3009OeLScnRykpKdN+PgDz+LQLgA/U29urgoKCeI8xpZ6eHuXn58d7DGDei+b9m5UPAB8oJydHPT09Z/QaY2Nj2rNnj7xerzZt2qTKysqYfLw2JyfnjF8DgFnEB4APlJKSEpPVhaSkJHm9Xl1zzTWsVgDzGBecAgAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEYRHwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEZFHR///ve/dcMNN2jx4sVKSUnRpz71KfX09ISPW5alhoYGuVwuJScnq7S0VIcPH47p0AAAIHFFFR9DQ0NatWqVPvKRj+hPf/qTnn32Wd17770699xzw+c0NjaqqalJzc3N6u7ultPpVHl5uUKhUKxnBwAACWhhNCffddddyszM1K5du8L7srKywv9tWZa2bt2qzZs3q6qqSpLU0tIih8Oh1tZWrV+/PjZTAwCAhBXVysfvf/97XX755fryl7+sCy64QJdddpl27twZPt7X1ye/36+KiorwPrvdrpKSEnV1dU35miMjIwoGgxEbAACYu6KKj5dfflnbt2+Xx+PRY489phtvvFHf/e539atf/UqS5Pf7JUkOhyPieQ6HI3zs3Xw+n9LT08NbZmbmdH4PAACQIKKKj/HxceXn58vr9eqyyy7T+vXr9a1vfUvbt2+POM9ms0U8tixr0r4J9fX1CgQC4a2/vz/KXwEAACSSqOIjIyNDn/zkJyP2rVixQq+88ookyel0StKkVY7BwcFJqyET7Ha70tLSIjYAADB3RRUfq1at0vPPPx+x74UXXtCyZcskSW63W06nU+3t7eHjo6Oj6ujoUFFRUQzGBQAAiS6qT7vcfPPNKioqktfr1bXXXqu///3v2rFjh3bs2CHp9J9bamtr5fV65fF45PF45PV6lZKSourq6hn5BQAAQGKJKj6uuOIKPfLII6qvr9cdd9wht9utrVu36vrrrw+fU1dXp+HhYdXU1GhoaEiFhYXat2+fUlNTYz48AABIPDbLsqx4D/FOwWBQ6enpCgQCXP8BzDG9vb0qKChQT0+P8vPz4z0OgBiK5v2be7sAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAqKjio6GhQTabLWJzOp3h45ZlqaGhQS6XS8nJySotLdXhw4djPjQAAEhcUa98XHzxxRoYGAhvzzzzTPhYY2Ojmpqa1NzcrO7ubjmdTpWXlysUCsV0aAAAkLiijo+FCxfK6XSGtyVLlkg6veqxdetWbd68WVVVVcrNzVVLS4tOnjyp1tbWmA8OAAASU9TxcfToUblcLrndbn31q1/Vyy+/LEnq6+uT3+9XRUVF+Fy73a6SkhJ1dXW95+uNjIwoGAxGbAAAYO6KKj4KCwv1q1/9So899ph27twpv9+voqIivfnmm/L7/ZIkh8MR8RyHwxE+NhWfz6f09PTwlpmZOY1fAwAAJIqo4mP16tW65pprlJeXpyuvvFJ/+MMfJEktLS3hc2w2W8RzLMuatO+d6uvrFQgEwlt/f380IwEAgARzRh+1Pfvss5WXl6ejR4+GP/Xy7lWOwcHBSash72S325WWlhaxAQCAueuM4mNkZERHjhxRRkaG3G63nE6n2tvbw8dHR0fV0dGhoqKiMx4UAADMDQujOfn73/++1qxZo6VLl2pwcFA/+clPFAwGtW7dOtlsNtXW1srr9crj8cjj8cjr9SolJUXV1dUzNT8AAEgwUcXHv/71L1133XV64403tGTJEn3605/Wk08+qWXLlkmS6urqNDw8rJqaGg0NDamwsFD79u1TamrqjAwPAAASj82yLCveQ7xTMBhUenq6AoEA138Ac0xvb68KCgrU09Oj/Pz8eI8DIIaief/m3i4AAMAo4gMAABhFfAAAAKOIDwAAYBTxAQAAjCI+AACAUcQHAAAwivgAAABGER8AAMAo4gMAABhFfAAAAKOIDwAAYBTxAQAAjCI+AACAUcQHAAAwivgAAABGER8AAMAo4gMAABhFfAAAAKOIDwAAYBTxAQAAjCI+AACAUcQHAAAwivgAAABGER8AAMAo4gMAABhFfAAAAKOIDwAAYBTxAQAAjCI+AACAUcQHAAAw6oziw+fzyWazqba2NrzPsiw1NDTI5XIpOTlZpaWlOnz48JnOCQAA5ohpx0d3d7d27NihSy65JGJ/Y2Ojmpqa1NzcrO7ubjmdTpWXlysUCp3xsAAAIPFNKz7eeustXX/99dq5c6c++tGPhvdblqWtW7dq8+bNqqqqUm5urlpaWnTy5Em1trbGbGgAAJC4phUfGzZs0NVXX60rr7wyYn9fX5/8fr8qKirC++x2u0pKStTV1TXla42MjCgYDEZsAABg7loY7RMeeugh9fb2qru7e9Ixv98vSXI4HBH7HQ6Hjh8/PuXr+Xw+bdmyJdoxAABAgopq5aO/v1/f+973tHv3bp111lnveZ7NZot4bFnWpH0T6uvrFQgEwlt/f380IwEAgAQT1cpHT0+PBgcHVVBQEN43Njam/fv3q7m5Wc8//7yk0ysgGRkZ4XMGBwcnrYZMsNvtstvt05kdAAAkoKhWPj73uc/pmWee0cGDB8Pb5Zdfruuvv14HDx7Uxz/+cTmdTrW3t4efMzo6qo6ODhUVFcV8eAAAkHiiWvlITU1Vbm5uxL6zzz5bixcvDu+vra2V1+uVx+ORx+OR1+tVSkqKqqurYzc1AABIWFFfcPpB6urqNDw8rJqaGg0NDamwsFD79u1TampqrH8UAABIQDbLsqx4D/FOwWBQ6enpCgQCSktLi/c4AGKot7dXBQUF6unpUX5+frzHARBD0bx/c28XAABgVMz/7AJg9jh69OisurXBkSNHIv53NklNTZXH44n3GMC8QHwAc9TRo0e1fPnyeI8xpRtuuCHeI0zphRdeIEAAA4gPYI6aWPHYvXu3VqxYEedpThseHtaxY8eUlZWl5OTkeI8TduTIEd1www2zapUImMuID2COW7Fixay6uHPVqlXxHgFAnHHBKQAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARkUVH9u3b9cll1yitLQ0paWlaeXKlfrTn/4UPm5ZlhoaGuRyuZScnKzS0lIdPnw45kMDAIDEFVV8XHjhhfrpT3+qp556Sk899ZQ++9nP6otf/GI4MBobG9XU1KTm5mZ1d3fL6XSqvLxcoVBoRoYHAACJJ6r4WLNmja666iotX75cy5cv15133qlzzjlHTz75pCzL0tatW7V582ZVVVUpNzdXLS0tOnnypFpbW2dqfgAAkGCmfc3H2NiYHnroIZ04cUIrV65UX1+f/H6/KioqwufY7XaVlJSoq6srJsMCAIDEtzDaJzzzzDNauXKl3n77bZ1zzjl65JFH9MlPfjIcGA6HI+J8h8Oh48ePv+frjYyMaGRkJPw4GAxGOxIAAEggUa98fOITn9DBgwf15JNP6tvf/rbWrVunZ599NnzcZrNFnG9Z1qR97+Tz+ZSenh7eMjMzox0JAAAkkKjjY9GiRcrOztbll18un8+nSy+9VPfff7+cTqckye/3R5w/ODg4aTXknerr6xUIBMJbf39/tCMBAIAEcsbf82FZlkZGRuR2u+V0OtXe3h4+Njo6qo6ODhUVFb3n8+12e/ijuxMbAACYu6K65mPTpk1avXq1MjMzFQqF9NBDD+nxxx/Xo48+KpvNptraWnm9Xnk8Hnk8Hnm9XqWkpKi6unqm5gcAAAkmqvh47bXX9LWvfU0DAwNKT0/XJZdcokcffVTl5eWSpLq6Og0PD6umpkZDQ0MqLCzUvn37lJqaOiPDAwCAxBNVfDz44IPve9xms6mhoUENDQ1nMhMAAJjDuLcLAAAwKurv+QCQGGyn3tZlzgVK/s8L0qv8O+P9JP/nBV3mXCDbqbfjPQowLxAfwBx11luvqHf9OdL+9dL+eE8zu62Q1Lv+HB156xVJ7/3pPACxQXwAc9Tb5yxV/gNv6Te/+Y1W5OTEe5xZ7chzz+n666/Xg1ctjfcowLxAfABzlLXwLP3DP67hc5dLrk/Fe5xZbdg/rn/4x2UtPCveowDzAn8IBgAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYFVV8+Hw+XXHFFUpNTdUFF1ygyspKPf/88xHnWJalhoYGuVwuJScnq7S0VIcPH47p0AAAIHFFFR8dHR3asGGDnnzySbW3t+vUqVOqqKjQiRMnwuc0NjaqqalJzc3N6u7ultPpVHl5uUKhUMyHBwAAiWdhNCc/+uijEY937dqlCy64QD09Pfq///s/WZalrVu3avPmzaqqqpIktbS0yOFwqLW1VevXr4/d5AAAICFFFR/vFggEJEnnnXeeJKmvr09+v18VFRXhc+x2u0pKStTV1TVlfIyMjGhkZCT8OBgMnslIAP7r5MmTkqTe3t44T/I/w8PDOnbsmLKyspScnBzvccKOHDkS7xGAeWXa8WFZljZu3KjPfOYzys3NlST5/X5JksPhiDjX4XDo+PHjU76Oz+fTli1bpjsGgPfw3HPPSZK+9a1vxXmSxJGamhrvEYB5YdrxcdNNN+mf//ynnnjiiUnHbDZbxGPLsibtm1BfX6+NGzeGHweDQWVmZk53LAD/VVlZKUnKyclRSkpKfIf5ryNHjuiGG27Q7t27tWLFiniPEyE1NVUejyfeYwDzwrTi4zvf+Y5+//vfa//+/brwwgvD+51Op6TTKyAZGRnh/YODg5NWQybY7XbZ7fbpjAHgfZx//vn65je/Ge8xprRixQrl5+fHewwAcRLVp10sy9JNN92ktrY2/fWvf5Xb7Y447na75XQ61d7eHt43Ojqqjo4OFRUVxWZiAACQ0KJa+diwYYNaW1v1u9/9TqmpqeFrPNLT05WcnCybzaba2lp5vV55PB55PB55vV6lpKSourp6Rn4BAACQWKKKj+3bt0uSSktLI/bv2rVLX//61yVJdXV1Gh4eVk1NjYaGhlRYWKh9+/ZxIRcAAJAUZXxYlvWB59hsNjU0NKihoWG6MwEAgDmMe7sAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAqKjjY//+/VqzZo1cLpdsNpv27NkTcdyyLDU0NMjlcik5OVmlpaU6fPhwrOYFAAAJLur4OHHihC699FI1NzdPebyxsVFNTU1qbm5Wd3e3nE6nysvLFQqFznhYAACQ+BZG+4TVq1dr9erVUx6zLEtbt27V5s2bVVVVJUlqaWmRw+FQa2ur1q9ff2bTAgCAhBfTaz76+vrk9/tVUVER3me321VSUqKurq4pnzMyMqJgMBixAQCAuSum8eH3+yVJDocjYr/D4Qgfezefz6f09PTwlpmZGcuRAADALDMjn3ax2WwRjy3LmrRvQn19vQKBQHjr7++fiZEAAMAsEfU1H+/H6XRKOr0CkpGREd4/ODg4aTVkgt1ul91uj+UYAABgFovpyofb7ZbT6VR7e3t43+joqDo6OlRUVBTLHwUAABJU1Csfb731ll588cXw476+Ph08eFDnnXeeli5dqtraWnm9Xnk8Hnk8Hnm9XqWkpKi6ujqmgwMAgMQUdXw89dRTKisrCz/euHGjJGndunX65S9/qbq6Og0PD6umpkZDQ0MqLCzUvn37lJqaGrupAQBAwrJZlmXFe4h3CgaDSk9PVyAQUFpaWrzHARBDvb29KigoUE9Pj/Lz8+M9DoAYiub9m3u7AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEYRHwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEYRHwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEYRHwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADCK+AAAAEYRHwAAwKgZi49t27bJ7XbrrLPOUkFBgTo7O2fqRwEAgASycCZe9Le//a1qa2u1bds2rVq1Sg888IBWr16tZ599VkuXLp2JHwlgBp08eVLPPffcGb/OkSNHIv43FnJycpSSkhKz1wMw82yWZVmxftHCwkLl5+dr+/bt4X0rVqxQZWWlfD7f+z43GAwqPT1dgUBAaWlpsR4NwDT09vaqoKAg3mNMqaenR/n5+fEeA5j3onn/jvnKx+joqHp6enT77bdH7K+oqFBXV9ek80dGRjQyMhJ+HAwGYz0SgDOUk5Ojnp6eM36d4eFhHTt2TFlZWUpOTo7BZKdnA5BYYh4fb7zxhsbGxuRwOCL2OxwO+f3+Sef7fD5t2bIl1mMAiKGUlJSYrS6sWrUqJq8DIHHN2AWnNpst4rFlWZP2SVJ9fb0CgUB46+/vn6mRAADALBDzlY/zzz9fSUlJk1Y5BgcHJ62GSJLdbpfdbo/1GAAAYJaK+crHokWLVFBQoPb29oj97e3tKioqivWPAwAACWZGPmq7ceNGfe1rX9Pll1+ulStXaseOHXrllVd04403zsSPAwAACWRG4uMrX/mK3nzzTd1xxx0aGBhQbm6u/vjHP2rZsmUz8eMAAEACmZHv+TgTfM8HAACJJ5r3b+7tAgAAjCI+AACAUcQHAAAwivgAAABGER8AAMAo4gMAABhFfAAAAKNm5EvGzsTE144Eg8E4TwIAAD6sifftD/P1YbMuPkKhkCQpMzMzzpMAAIBohUIhpaenv+85s+4bTsfHx/Xqq68qNTVVNpst3uMAiKFgMKjMzEz19/fzDcbAHGNZlkKhkFwulxYseP+rOmZdfACYu7h9AgCJC04BAIBhxAcAADCK+ABgjN1u149//GPZ7fZ4jwIgjrjmAwAAGMXKBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAMGL//v1as2aNXC6XbDab9uzZE++RAMQJ8QHAiBMnTujSSy9Vc3NzvEcBEGez7sZyAOam1atXa/Xq1fEeA8AswMoHAAAwivgAAABGER8AAMAo4gMAABhFfAAAAKP4tAsAI9566y29+OKL4cd9fX06ePCgzjvvPC1dujSOkwEwjbvaAjDi8ccfV1lZ2aT969at0y9/+UvzAwGIG+IDAAAYxTUfAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACjiA8AAGDU/wNH+2uCQBb+sgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.boxplot(df_drop_row['Age']) #看哪一列的箱线图,图的作用不大，推荐用上面的for循环\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "892f35e7",
   "metadata": {},
   "source": [
    "3.2异常值处理-拉依达原则（又叫3σ原则）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "6bbc4fad",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "# 定义：其值(指的是这一列中的每一个值)与均值的差值的绝对值大于3倍标准差的值被定义为异常值\n",
    "# 公式：|x-μ|>3σ   ||：绝对值 μ：均值 σ：绝对值\n",
    "mean = df_drop_row['Age'].mean()  #求均值\n",
    "std = np.std(df_drop_row['Age'])  #求标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "004c0028",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 异常值处理\n",
    "for x in df_drop_row['Age'].index:\n",
    "    if np.abs(df_drop_row['Age'][x] - mean)> 3*std:\n",
    "        print('异常值',df_drop_row['Age'][x])\n",
    "        #删除\n",
    "#         df_drop_row.drop(axis=0,index=x,inplace=True) #按行删除 index为行的索引,inplace，是否对原表进行删除\n",
    "        #替换\n",
    "        df_drop_row.replace(df_drop_row['Age'][x],df_drop_row['Age'].mean(),inplace=True) #用均值替换原表\n",
    "# for x in df_drop_row['Age'].index:\n",
    "#     if np.abs(df_drop_row['Age'][x] - mean)> 3*std:\n",
    "#         print('还有异常值',df_drop_row['Age'][x])  #这里无打印，说明上面的异常值已经处理了，即删掉了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "04a8d6c4",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABNoUlEQVR4nO3de3gUVZo/8G/nTkLSJgTSiQaIiCMxeMMRAgooFy8guj6z3h18ZF1UcIniyqDrElYlXnbFmUGZkXFEYRR/syOKiixBEURgxGCUEIZBDBElTQaI3QGSDiTn90foorvTl6rq6u5T3d/P8+R5oPt09znV1VVvnTrnPRYhhAARERGRRJJiXQEiIiIiXwxQiIiISDoMUIiIiEg6DFCIiIhIOgxQiIiISDoMUIiIiEg6DFCIiIhIOgxQiIiISDopsa6AHl1dXThw4ACys7NhsVhiXR0iIiJSQQiB1tZWFBUVISkpeB+JKQOUAwcOoLi4ONbVICIiIh3279+Ps846K2gZUwYo2dnZALobmJOTE+PaEBERkRpOpxPFxcXKeTwYUwYo7ts6OTk5DFCIiIhMRs3wDA6SJSIiIukwQCEiIiLpMEAhIiIi6TBAISIiIukwQCEiIiLpMEAhIiIi6TBAISIiIukwQCEiIiLpmDJRGxFFXsfJLizbsg+NR45jQF4m7iofiOQkC75oOILm1nb0y87AZSV5SE7ielhEZDwGKETUQ9Xqeiz5rAFd4vRjT63ehV6pyTje0ak8VmjNwLzrS3FNWWEMaklE8Yy3eIjIS9Xqevx+o3dwAgBCwCs4AQC7ox33L9+ONXVNUawhESUCBihEpOg42YUlnzWoLu+OYea/X49O34iGiCgMDFCISLFsy74ePSehCABNjnZ80XAkInUiosTEAIWIFI1Hjut+bXNru4E1IaJExwCFiBQD8jJ1v7ZfdoaBNSGiRMcAhYgUd5UPhNZZwxZ0z+a5rCQvInUiosTEAIWIFGkpSbj3ihLV5d2xzLzrS5kPhYgMpSlAqayshMVi8fqz2WzK80IIVFZWoqioCL169cLYsWOxc+dOr/dwuVx48MEHkZ+fj6ysLEyZMgU//PCDMa0horDNva4U00eX9OhJsViAzLRkr8ds1gwsvvMS5kEhIsNpTtR2/vnnY926dcr/k5NPH7Cee+45vPDCC1i6dCnOPfdcPPXUU5gwYQJ2796N7OxsAEBFRQXef/99rFixAn369MHs2bMxefJk1NTUeL0XEcXO3OtKMXviecwkS0QxozlASUlJ8eo1cRNC4MUXX8Tjjz+Om266CQDw+uuvo6CgAG+++SamT58Oh8OBV199FcuWLcP48eMBAMuXL0dxcTHWrVuHq6++OszmEJFR0lKSMO2Ks3s8Xj6oTwxqQ0SJRvMYlD179qCoqAglJSW49dZb8d133wEAGhoaYLfbMXHiRKVseno6xowZg82bNwMAampqcOLECa8yRUVFKCsrU8oQERERaepBGT58ON544w2ce+65OHjwIJ566imMHDkSO3fuhN1uBwAUFBR4vaagoACNjY0AALvdjrS0NOTm5vYo4369Py6XCy6XS/m/0+nUUm0iIiIyGU0ByrXXXqv8e+jQoSgvL8egQYPw+uuvY8SIEQAAi8X7frQQosdjvkKVqaqqwvz587VUlYiIiEwsrGnGWVlZGDp0KPbs2aOMS/HtCWlublZ6VWw2Gzo6OtDS0hKwjD9z586Fw+FQ/vbv3x9OtYmIiEhyYQUoLpcLu3btQmFhIUpKSmCz2VBdXa0839HRgQ0bNmDkyJEAgGHDhiE1NdWrTFNTE+rq6pQy/qSnpyMnJ8frj4iIiOKXpls8jzzyCK6//nr0798fzc3NeOqpp+B0OjF16lRYLBZUVFRgwYIFGDx4MAYPHowFCxYgMzMTt99+OwDAarVi2rRpmD17Nvr06YO8vDw88sgjGDp0qDKrh4iIiEhTgPLDDz/gtttuw6FDh9C3b1+MGDECW7duxYABAwAAjz76KNra2vDAAw+gpaUFw4cPx9q1a5UcKACwcOFCpKSk4Oabb0ZbWxvGjRuHpUuXMgcKERERKSxCCI2Lq8ee0+mE1WqFw+Hg7R4iIiKT0HL+5lo8REREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJB0GKERERCQdBihEREQkHQYoREREJJ2wApSqqipYLBZUVFQojwkhUFlZiaKiIvTq1Qtjx47Fzp07vV7ncrnw4IMPIj8/H1lZWZgyZQp++OGHcKpCREREcUR3gLJt2za88soruOCCC7wef+655/DCCy9g0aJF2LZtG2w2GyZMmIDW1lalTEVFBVauXIkVK1Zg06ZNOHr0KCZPnozOzk79LSEiIqK4oStAOXr0KO644w4sWbIEubm5yuNCCLz44ot4/PHHcdNNN6GsrAyvv/46jh8/jjfffBMA4HA48Oqrr+J//ud/MH78eFx88cVYvnw5duzYgXXr1hnTKiIiIjI1XQHKjBkzMGnSJIwfP97r8YaGBtjtdkycOFF5LD09HWPGjMHmzZsBADU1NThx4oRXmaKiIpSVlSllfLlcLjidTq8/IiIiil8pWl+wYsUKbN++Hdu2bevxnN1uBwAUFBR4PV5QUIDGxkalTFpamlfPi7uM+/W+qqqqMH/+fK1VJSIiIpPS1IOyf/9+zJo1C8uXL0dGRkbAchaLxev/Qogej/kKVmbu3LlwOBzK3/79+7VUm4iIiExGU4BSU1OD5uZmDBs2DCkpKUhJScGGDRvwm9/8BikpKUrPiW9PSHNzs/KczWZDR0cHWlpaApbxlZ6ejpycHK8/IiIiil+aApRx48Zhx44dqK2tVf4uvfRS3HHHHaitrcXZZ58Nm82G6upq5TUdHR3YsGEDRo4cCQAYNmwYUlNTvco0NTWhrq5OKUNERESJTdMYlOzsbJSVlXk9lpWVhT59+iiPV1RUYMGCBRg8eDAGDx6MBQsWIDMzE7fffjsAwGq1Ytq0aZg9ezb69OmDvLw8PPLIIxg6dGiPQbdERESUmDQPkg3l0UcfRVtbGx544AG0tLRg+PDhWLt2LbKzs5UyCxcuREpKCm6++Wa0tbVh3LhxWLp0KZKTk42uDhEREZmQRQghYl0JrZxOJ6xWKxwOB8ejEBERmYSW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Y/EkXto7c+ZMfPPNN9i0aVOP58zexp/97Geora3FTz/9hL/85S+YOnUqNmzYoDxv5vbt378fs2bNwtq1a5GRkRGwnJnbeO211yr/Hjp0KMrLyzFo0CC8/vrrGDFiBABztw8Aurq6cOmll2LBggUAgIsvvhg7d+7E4sWL8ctf/lIpZ/Z2AsCrr76Ka6+9FkVFRV6Pm71tb7/9NpYvX44333wT559/Pmpra1FRUYGioiJMnTpVKRerdib0LZ78/HwkJyf36C1pbm7uETHGA/csgnho74MPPohVq1Zh/fr1OOuss5TH46WNaWlpOOecc3DppZeiqqoKF154IX7961/HRftqamrQ3NyMYcOGISUlBSkpKdiwYQN+85vfICUlRWmHmdvoKysrC0OHDsWePXvi4jsEgMLCQpSWlno9NmTIEHz//fcA4ue32NjYiHXr1uFf/uVflMfipW3//u//jl/96le49dZbMXToUNx111146KGHUFVVBSD27UzoACUtLQ3Dhg1DdXW11+PV1dUYOXJkjGoVOSUlJbDZbF7t7ejowIYNG0zTXiEEZs6ciXfeeQeffPIJSkpKvJ6Phzb6I4SAy+WKi/aNGzcOO3bsQG1trfJ36aWX4o477kBtbS3OPvts07fRl8vlwq5du1BYWBgX3yEAjBo1qscU/7///e8YMGAAgPj5Lb722mvo168fJk2apDwWL207fvw4kpK8w4Dk5GRlmnHM2xnxYbiSc08zfvXVV0V9fb2oqKgQWVlZYt++fbGumi6tra3iq6++El999ZUAIF544QXx1VdfKdOmn3nmGWG1WsU777wjduzYIW677TZTTY27//77hdVqFZ9++qnXFMDjx48rZczexrlz54qNGzeKhoYG8c0334jHHntMJCUlibVr1wohzN8+fzxn8Qhh/jbOnj1bfPrpp+K7774TW7duFZMnTxbZ2dnKccXs7ROie4p4SkqKePrpp8WePXvEn/70J5GZmSmWL1+ulDF7Ozs7O0X//v3FnDlzejxn9rYJIcTUqVPFmWeeqUwzfuedd0R+fr549NFHlTKxbGfCByhCCPHSSy+JAQMGiLS0NHHJJZcoU1bNaP369QJAj7+pU6cKIbqnjc2bN0/YbDaRnp4uRo8eLXbs2BHbSmvgr20AxGuvvaaUMXsb77nnHmV/7Nu3rxg3bpwSnAhh/vb54xugmL2N7lwRqampoqioSNx0001i586dyvNmb5/b+++/L8rKykR6ero477zzxCuvvOL1vNnb+X//938CgNi9e3eP58zeNiGEcDqdYtasWaJ///4iIyNDnH322eLxxx8XLpdLKRPLdlqEECLy/TRERERE6iX0GBQiIiKSEwMUIiIikg4DFCIiIpIOAxQiIiKSDgMUIiIikg4DFCIiIpIOAxQiIiKSDgMUIiIikg4DFCIiIpIOAxQiIiKSDgMUIiIikg4DFCIiIpLO/wcmW5AU5C3f/wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 散点图\n",
    "plt.scatter(df_drop_row['Age'],df_drop_row['Fare']) # 散点图，这里需要x,y两个参数,这里给了两个列的值\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94e5904a",
   "metadata": {},
   "source": [
    "3.2异常值处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "cbd6fb74",
   "metadata": {},
   "outputs": [],
   "source": [
    "list_e = [] #用一个列表来保存异常值\n",
    "while True: #为什么要用循环呢，因为每次删除或者替换异常值的时候四分位数会发生变化\n",
    "    # 计算四分位数\n",
    "    sfw = df_drop_row['Age'].describe() # 查看数据的整体信息\n",
    "    # sfw\n",
    "    Q1 = sfw['75%'] # 75%分位数  上四分位数\n",
    "    Q2 = sfw['50%'] # 50%分位数\n",
    "    Q3 = sfw['25%'] # 25%分位数  下四分位数\n",
    "    IQR = Q1 - Q3\n",
    "    up = Q1 + 1.5 * IQR #上边界\n",
    "    down = Q3 - 1.5 * IQR #下边界\n",
    "    # 异常值处理\n",
    "    for x in df_drop_row['Age'].index:\n",
    "        if df_drop_row['Age'][x]>up or df_drop_row['Age'][x]<down:\n",
    "            list_e.append(df_drop_row['Age'][x])\n",
    "            print('异常值',df_drop_row['Age'][x])\n",
    "            #方式1，删除\n",
    "    #         df_drop_row.drop(axis=0,index=x,inplace=True) #按行删除 index为行的索引,inplace，是否对原表进行删除\n",
    "            #方式2，替换\n",
    "            df_drop_row.replace(df_drop_row['Age'][x],df_drop_row['Age'].mean(),inplace=True) #用均值替换原表\n",
    "    if len(list_e) == 0:\n",
    "        break\n",
    "    else:\n",
    "        list_e.clear()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "44b3ccb6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.boxplot(df_drop_row['Age']) #看哪一列的箱线图,图的作用不大，推荐用上面的for循环\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "09dbedc7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 通过循环来删除异常值，直到没有异常值为止，防止以上异常值处理时运行多次才能删除完异常值\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
